package com.hsylient.javase.chapter09;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

public class ParallelStreamTest {


    public static void main(String[] args) {

        // 准备一个Set类型的字符串集合 初始化容量 然后给22个值
        Set<String> strings = new HashSet<>(22);

        for (int i = 0; i < 22; i++) {
            strings.add(i + "");
        }

        // 同样的Set给上32个值
        Set<Integer> numbers = new HashSet<>(32);
        for (int i = 0; i < 32; i++) {
            numbers.add(i);
        }

        // 这里一定要用线程安全的List不然会有线程安全问题 (最终输入的集合中元素的数量 小于 704)
        List<Map<String, Integer>> list = new CopyOnWriteArrayList<>();

        strings.parallelStream().forEach(string -> numbers.parallelStream().forEach(number -> {
            Map<String, Integer> map = new HashMap<>();
            map.put(string, number);
            list.add(map);
        }));
        System.out.println("并行流处理后Map中元素的个数：" + list.size());
    }
}
